// #include <iostream>

// void printArray(int* arr, int size) {
//     for (int i = 0; i <= size; ++i) {  // 故意制造数组越界
//         std::cout << arr[i] << " ";
//     }
//     std::cout << std::endl;
// }

// int* createArray(int size) {
//     if (size <= 0) {
//         return nullptr;  // 返回空指针
//     }
//     int* arr = new int[size];
//     for (int i = 0; i < size; ++i) {
//         arr[i] = i * 2;
//     }
//     return arr;
// }

// int main() {
//     int size = 5;
//     int* myArray = createArray(size);

//     if (myArray == nullptr) {
//         std::cerr << "Failed to create array!" << std::endl;
//         return 1;
//     }

//     printArray(myArray, size);

//     delete[] myArray;  // 释放内存

//     // 故意制造空指针解引用
//     // int* nullPtr = nullptr;
//     // std::cout << *nullPtr << std::endl;

//     return 0;
// }
// #include <iostream>

// void functionC() {
//     int a = 42;
//     int* nullPtr =&a;
//       // 这里会触发段错误
//     std::cout<<*nullPtr<<std::endl;
// }

// void functionB() {
//     std::cout << "Entering functionB()" << std::endl;
//     functionC();  // 调用 functionC
//     std::cout << "Exiting functionB()" << std::endl;
// }

// void functionA() {
//     std::cout << "Entering functionA()" << std::endl;
//     functionB();  // 调用 functionB
//     std::cout << "Exiting functionA()" << std::endl;
// }

// int main() {
//     std::cout << "Starting program..." << std::endl;
//     functionA();  // 调用 functionA
//     std::cout << "Ending program..." << std::endl;
//     return 0;
// }
#include <iostream>
#include <vector>

// 递归函数，计算斐波那契数列
int fibonacci(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);  // 递归调用
}

// 动态分配数组并初始化
int* createArray(int size) {
    if (size <= 0) {
        return nullptr;  // 返回空指针
    }
    int* arr = new int[size];
    for (int i = 0; i < size; ++i) {
        arr[i] = i * 2;
    }
    return arr;
}

// 打印数组内容
void printArray(int* arr, int size) {
    if (arr == nullptr) {
        std::cerr << "Error: Array is null!" << std::endl;
        return;
    }
    for (int i = 0; i <= size; ++i) {  // 故意越界访问
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

// 释放动态分配的内存
void freeArray(int* arr) {
    if (arr != nullptr) {
        delete[] arr;
    }
}

// 主函数
int main() {
    std::cout << "Starting program..." << std::endl;

    // 递归函数测试
    int fibResult = fibonacci(5);
    std::cout << "Fibonacci(5) = " << fibResult << std::endl;

    // 动态数组测试
    int size = 5;
    int* myArray = createArray(size);
    printArray(myArray, size);  // 打印数组
    freeArray(myArray);

    // 空指针测试
    int* nullArray = nullptr;
    printArray(nullArray, 0);  // 故意传入空指针

    // 内存泄漏测试（故意不释放内存）
    int* leakedArray = createArray(10);

    std::cout << "Ending program..." << std::endl;
    return 0;
}